A nerve center for any financial system is the stock market exchange. A stock market exchange is an organized and regulated financial market where securities (bonds, notes, shares) are bought and sold at prices governed by the forces of demand and supply. Stock exchanges basically serve as (1) primary markets where corporations, governments, municipalities, and other incorporated bodies can raise capital by channeling savings of the investors into productive ventures; and (2) secondary markets where investors can sell their securities to other investors for cash, thus reducing the risk of investment and maintaining liquidity in the system. Stock exchanges impose stringent rules, listing requirements, and statutory requirements that are binding on all listed and trading parties. Trades in the older exchanges are conducted on the floor (called the ‘trading floor’) of the exchange itself, by shouting orders and instructions (called open outcry system). On modern exchanges, trades are conducted over telephone or online. Almost all exchanges are ‘auction exchanges’ where buyers enter competitive bids and sellers enter competitive orders through a trading day. Some European exchanges, however, use ‘periodic auction’ method in which round-robin calls are made once a trading day. The first stock exchange was opened in Amsterdam in 1602; the three largest exchanges in the world are (in the descending order) New York Stock Exchange (NYSE), London Stock Exchange (LSE), and the Tokyo Stock Exchange (TSE).
Stock market data is presented at various levels. Level 1 data is the high-level that typical investors such as individuals usually view stock information. FIG. 1 provides a high level snapshot Level 1 data and how a particular security is priced. As shown 1a indicates a hid is the price at which one can sell. The price shown on the screen is the highest/best bid currently available in the market. The offer 1b is the price at which you can buy. The price shown on the screen is the lowest/best bid currently available in the market. 1c is the name of the particular security. The company code 1d is a unique identifier under which a company is traded on the London Stock Exchange. Codes for companies will normally be made up of three or four letters and are generally derived from the Security Name. The previous trading period's closing price is indicated by 1e. The normal market size (NMS) 1f defines the quantity for what a reasonable size trade. The last trade price of a security is indicated by 1g. The mid-price of the security is 1h. The mid-price is the derived median (halfway point) between the bid and offer price. The change in price between the last trade and previous closing price is indicated by 1i. The percentage change in price between the last trade and previous closing price is indicated by 1j. The trade time 1k is the time the last trade was executed. The current trading period's highest price is displayed as 1l. The current trading period's lowest price is displayed as 1m. The total number of shares traded in the period is 1n. 1o shows the quantity of stock bought or sold in that last trade. The total number of trades or “bargains” that have been executed during the day is indicated by 1p. The uncrossing price from the last auction is 1q. 1r is the auction volume, which is the number of shares crossed in the last auction. The value of the stock set at the closing of a particular day is 1s. 
While Level 1 data gives a good overview of a security, it does not provide any detail as to what is underlying this, what orders are waiting to be executed or how this might influence the next price move. To get a better insight into what is really happening in the market one will need access to Level 2 Data.
Level 2 market data provides the most comprehensive and in depth set of data available on trading activity. This means more informed trading and investing, through high visibility of the factors and trends underlying price movements, all updated in real time, all the time. With access to Level 2 market data one can:                view the orders awaiting execution on the buy and sell side of the order book;        analyze movements in the price of a security;        monitor fast moving markets;        identify trading opportunities;        help identify iceberg orders or other automated trading patterns; and        utilize a variety of market indicators to make informed decisions.In addition, with the Level 2 market data one can become a price maker as opposed to a price taker by deciding at what price to buy or sell and placing the order directly with the Exchange's order book via Direct Market Access (DMA).        
Processing real-time level 1 financial data (trade information and best bid/ask quotes) is a relatively straightforward exercise in field normalization and storage. Level 2 data (a.k.a., depth-of-book, order book, full depth, consolidated book) is more complicated in that it is two-dimensional, higher-volume, and the required storage is not fixed. To compound that complexity, the available level 2 feeds organize and disseminate data very differently, and different customer applications sometimes prefer to see this data presented to them in very different ways. For example, some of the incoming feeds collect all data at a particular price for a stock, adding up all of the advertised liquidity at that price and sending it out together. Other feeds show individual orders, even if they contain the same price, and they use a private unique order id as the key (rather than the stock name/price). Clients, however, are not concerned with the disparity of incoming data formats, and expect IBM's WFO Feed Handler product will mask these details (even blend different types of data together). Regardless of the incoming format, the client may want to see data separated into orders, or aggregated together by price, or maybe by price per ‘market maker’, or in a variety of other ways, and they may want to see that data in different wire formats. The excessive permutations of incoming and outgoing data formats present a challenge to the feed handler developer.
The earliest solutions to this problem were very ad hoc. When a new level 2 feed became available, a custom implementation for that feed would be created. When a customer wanted to see data a particular way, the product would be customized to support that format. Some vendors eventually created more generic systems that could accommodate some disparity of incoming data, and organize data in a one of a small set of predefined ways. Most recently, a Skyler has announced a product that is more dynamic and configurable than legacy feed handlers that financial institutions may be running today see (http://www.skylertech.com/solutions/c3_liquidity_discovery_solution.php). However, Skyler's solution is confined to a small subset of predefined incoming and outgoing data formats, and is not fully extensible. Further, its attempt to maintain dynamic per-client views could drain performance.
A better solution would be a streamlined, modular library that was fully fluid and extensible, with a well-thought-out architecture that would easily accommodate an array of different data feeds, with the agility to organize data in as many ways as is fathomable, and with support for an expandable array of well-known or proprietary wire formats.
Although feeds for Level 2 data contain many different pieces of information, in convention processing methods, only certain pieces of the feed data are processed. The lack of processing other data contained in a Level 2 feed wastes much of the information and deprives clients of valuable information about the activity of the stock market. There remains a need for a system and architecture that can process multiple pieces of information from a Level 2 data as desired by a client. There also remains a need for an architecture and interface that can provide newly processed and costumed Level 2 data to clients in formats that are compatible with conventional customer display architectures.